﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using System.Configuration;
using LapvComponent;
using LapvBussiness;

namespace Lapv.Account
{
    public partial class AccAdd : System.Web.UI.Page
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(AccAdd).Name);        
        public string domain =ConfigLapv.Instance.DomainAdmin;
        int UserId = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Params["UserId"] != null)
            {
                int.TryParse(Request.Params["UserId"].Trim().Replace("'", ""), out UserId);

            }
            string curUrl = Request.RawUrl.ToString();
            ProviderAdmin.CheckAuthen(curUrl, 9);
            if (Page.IsPostBack) return;

            if (UserId > 0)
            {
                bt_luu.Text = "Lưu";

                using (lapvEntities db = new lapvEntities())
                {
                    account gm = db.accounts.Where(en => en.id == UserId).FirstOrDefault();
                    txtUserName.Text = gm.username;
                    txtPass.Text = gm.password;
                    txtId.Text = gm.id.ToString();
                    txtId.Enabled=false;
                }
            }
            else {
                id.Visible = false;
            }
            bindData();
        }
        private void bindData()
        {
            try
            {
                using (lapvEntities db = new lapvEntities())
                {
                    List<role> lstRole = db.roles.ToList();
                    ddlRole.DataSource = lstRole;
                    ddlRole.DataTextField = "name";
                    ddlRole.DataValueField = "id";
                    ddlRole.DataBind();
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                ((Lapv)this.Master).MessageError = "Quá trình lấy dữ liệu bị lỗi. " + ex.Message;
            }
        }
        protected void btnEdit_Click(object sender, EventArgs e)
        {
            string username = txtUserName.Text.Trim().ToLower();
            string pass = txtPass.Text.Trim();
            string repass = txtRePass.Text.Trim();
            string msg = "";
            string msg2 = "";
            try
            {
                if (string.IsNullOrEmpty(username))
                {
                    ((Lapv)this.Master).MessageError = "Tên đăng nhập không được để trống";
                    return;
                }
                if (string.IsNullOrEmpty(pass))
                {
                    ((Lapv)this.Master).MessageError = "Mật khẩu không được để trống";
                    return;
                }
                if (string.IsNullOrEmpty(repass))
                {
                    ((Lapv)this.Master).MessageError = "Hãy nhập lại mật khẩu";
                    return;
                }
                if (repass != pass)
                {
                    ((Lapv)this.Master).MessageError = "Hãy nhập lại mật khẩu cho đúng";
                    return;
                }
                int roleid = -1;
                roleid = int.Parse(ddlRole.SelectedValue);
                if (roleid < 0)
                {
                    ((Lapv)this.Master).MessageError = "Hãy chọn quyền truy cập quản trị";
                    return;
                }
                if (UserId > 0)
                {
                    using (lapvEntities db = new lapvEntities())
                    {
                        account gm = db.accounts.Where(en => en.id == UserId).FirstOrDefault();


                        gm.ipcanlogin = ddlIP.SelectedValue;
                        gm.password = Provider.GetMD5Hash(pass);
                        gm.role1Reference.EntityKey = new System.Data.EntityKey("lapvEntities.role", "id", roleid);
                        gm.username = username;
                        db.ApplyCurrentValues(gm.EntityKey.EntitySetName, gm);
                        db.SaveChanges();
                        msg = "Sửa đổi thông tin thành viên quản trị thành công userid " + gm.id + ", tên đăng nhập " + username;
                        msg2 = "Sửa đổi thông tin thành công userid " + gm.id + ", tên đăng nhập " + username ;
                        ((Lapv)this.Master).MessageInfomational = "Sửa đổi thông tin thành viên thành công";
                    }

                }
                else
                {
                    account gm = new account();
                    gm.datecreate = DateTime.Now;
                    gm.endhour = 24;
                    gm.ipcanlogin = ddlIP.SelectedValue;
                    gm.password = Provider.GetMD5Hash(pass);
                    gm.role1Reference.EntityKey = new System.Data.EntityKey("lapvEntities.role", "id", roleid);
                    gm.starthour = 0;
                    gm.status = false;
                    gm.username = username;
                    using (lapvEntities db = new lapvEntities())
                    {
                        db.AddToaccounts(gm);
                        db.SaveChanges();
                    }
                    msg = "Thêm thành viên quản trị thành công userid " + gm.id + ", tên đăng nhập " + username;
                    msg2 = "Thêm thành công userid " + gm.id + ", tên đăng nhập " + username ;
                    ((Lapv)this.Master).MessageInfomational = "Thêm thành viên thành công";
                }

            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                msg = "Thêm thành viên quản trị bị lỗi với tên đăng nhập " + username;
                msg = "Thêm thành viên quản trị bị lỗi với tên đăng nhập " + username + ", mật khẩu " + pass;
                ((Lapv)this.Master).MessageError = "Quá trình lưu dữ liệu bị lỗi. " + ex.Message;
            }
            try
            {
                int uid = 0;
                string uname = string.Empty;
                uid = ProviderAdmin.GetUsserId();
                if (Session["UserName"] != null)
                    uname = Session["UserName"].ToString();
                ProviderAdmin.AddLog(uid, uname, msg, msg2, "USER_ADMIN_ADD");
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
            }
        } 
    }
}
